import openpyxl

def read_excel():
    # 1.打开 excel 文件
    # 最好使用当前根目录的相对路径
    workbook = openpyxl.load_workbook("./utils/pytest测试用例.xlsx")

    # 2.选择 sheet 表
    worksheet = workbook["Sheet1"]

    # 3.操作
        # 1) 读取 key 数据
        # 需要用到 zip() 函数
        # dict(zip(key, value)) 可以把读取到的数据变成字典类型, 只需要取出里面的 key行 和 value行即可
        # 如: print(dict(zip([1, 2, 3, 4], ["a", "b", "c"]))) 就可以看出该函数的功能
    data = [] # 空列表, 用于组装字典里面的参数, 因为最后传入参数是需要传列表类型的

        # 拿取数据, 使用生成表达式
        # worksheet[2] 即为 表格中的第二行, 里面存的参数就是 key行
    keys = [cell.value for cell in worksheet[2]]

        # 2) 读取 value 数据
        # 因为 value 行是不固定的, 所以需要 .iter_rows() 函数
        # min_row 代表从哪行开始读, 读到空行自动停止; values_only 代表只读表格里面的数据
    for row in worksheet.iter_rows(min_row=3, values_only=True):
        # print(row) # 如果不填values_only参数, 打印出来的是 A3,A4..., 打印一下就知道了
        # print(dict(zip(keys, row)))
        dict_data = dict(zip(keys, row)) # 把获取到的 key-value 数据放到字典变量中
        data.append(dict_data) # 注意这是一个循环, 每次循环都把获取到的数据 append 到列表中

    # 打印 data 数据验证
    print(data)

    # 4.关闭 excel 文件
    workbook.close()

    # 5.返回结果
    return data